Directory services exist in the form of software systems that store, organize and provide access to information in a directory. As used herein, the term directory generally refers to a set of objects that are organized in a logical and hierarchical manner. Various protocols exist by which clients may interact with a directory service to perform operations with respect to objects in a directory, such as creating, deleting, updating or running queries against objects in the directory. For example, the Lightweight Directory Access Protocol (LDAP) is a protocol by which clients may interact with a directory service over a TCP connection. The LDAP protocol was designed by University of Michigan to provide access to the X.500 Directory while not incurring the resource requirements of the Directory Access Protocol (DAP). This makes it very suitable for use on the Internet. Generally speaking, in an LDAP-style directory service, the directory comprises a tree of directory objects, wherein each object consists of a set of attributes. An attribute has a name (an attribute type or attribute description) and one or more values. The attributes are defined in a schema.
It may be deemed desirable to implement systems in which clients can interact with a remote directory service, such as an LDAP-style directory service, over a network using industry standard Web services protocols. For example, it may be deemed desirable to enable clients to interact with a remote directory service using industry standard Web services protocols that represent resources using Extensible Markup Language (XML). Examples of such Web services protocols include, for example, SOAP-based protocols such as WS-Transfer and WS-Enumeration.
SOAP, which was originally defined as Simple Object Access Protocol, is a protocol specification for exchanging structured information in the implementation of Web Services in computer networks. SOAP relies on XML as its message format, and usually relies on other application layer protocols (most notably Hypertext Transfer Protocol (HTTP)) for message negotiation and transmission. SOAP can form the foundation layer of a Web services protocol stack, providing a basic messaging framework upon which Web services can be built.
WS-Transfer describes a SOAP-based protocol for accessing XML representations of Web service-based resources. WS-Transfer defines how to invoke a simple set of familiar verbs (Get, Create, Put, and Delete) using SOAP. An application protocol may be constructed to perform these operations over resources. WS-Transfer is described in more detail at http://www.w3.org/Submission/WS-Transfer.
WS-Enumeration describes a SOAP-based protocol for enumerating a sequence of XML elements. WS-Enumeration enables an application to provide an enumeration message to a Web service, requesting a representation of all objects that match designated criteria. The Web service responds to the enumeration message with an enumeration context, which may be used by the application to retrieve the objects that match the designated criteria. In this way, WS-Enumeration is useful for reading event logs, message queues, streaming, or other applications for which a simple single-request/single-reply metaphor is insufficient for transferring large data sets over SOAP. WS-Enumeration is described in more detail at http://www.w3.org/Submission/WS-Enumeration.
Although it may be deemed desirable to enable clients to interact with a remote directory service, such as an LDAP-style directory service, using industry standard Web services protocols that represent resources using XML as noted above, industry standard Web services protocols such as WS-Transfer and WS-Enumeration do not specify how LDAP-style directory data should be modeled in XML.